import axios from "axios";
import { message } from "antd";
import { router } from "@/utils/common";
import store from "@/store";
const request = axios.create({
    // 最长 请求时长
    timeout: 20000,
    // baseURL配置基础路径
    //可以根据当前的环境（开发环境、生产环境）来配置不同的路径
    baseURL: process.env.NODE_ENV === "production" ?
        "http://121.89.205.189:3000/admin" :
        "http://121.89.205.189:3000/admin",
});
axios.defaults.headers["Content-Type"] =
    "application/x-www-form-urlencoded;charset=UTF-8";

// export const requestMock = axios.create({
//     // 最长请求时长
//     timeout: 1000,
//     // baseURL配置基础路径
//     //可以根据当前的环境（开发环境、生产环境）来配置不同的路径
//     baseURL: "https://www.fastmock.site/mock/03f4045481d1a198b2f784050cdda5f4/bk2211/api",
// });
// const requestList = [request, requestMock];
const requestList = [request];
requestList.forEach((util) => {
    // 请求拦截器
    util.interceptors.request.use(
        (config) => {
            config.headers.token = store.getState().authority.token || ""; //从store里取token
            return config;
        },
        (error) => {
            message.error("请求失败,请再次尝试");
            throw error;
        }
    );

    // 响应拦截器
    util.interceptors.response.use(
        (res) => {
            const isSuccess = res.data.code === "200";
            const isTokenBroken = res.data.code === "10119";
            const { method } = res.config;
            // UI反馈

            if (method !== "get" || !isSuccess) {
                // if (!silent) {
                if (isTokenBroken) {
                    message.warning("登录过期，请重新登录！");
                    // 返回到登录页面
                    router.history.push("login");
                } else
                    isSuccess ?
                    message.success(res.data.message) :
                    message.error(res.data.message);
                // }
            }
            if (isSuccess) {
                // 成功返回真正的数据
                return res.data.data;
            }
            // if (loud)
            //     isSuccess ?
            //     message.success(res.data.message) :
            //     message.warning(res.data.message);

            // 失败
            throw new Error(res.data.data);
        },
        (error) => {
            // 请求过程失败
            message.warning("网络请求失败");
            throw error;
        }
    );
});

export default request;